/*
 * Define la interfaz de una pila tal y como debe de ser implementada.
 * 
 * Obtenido de los documentos de Blackboard del curso de Algoritmos y
 * Estructuras de Datos.
 * Autor: Ing. Douglas Barrios
 */

package Stack;

/**
 * 
 * @author Ing. Douglas Barrios
 * @param <E> Tipo de dato que la pila estará utilizando.
 */
public interface Stack<E> 
{

   public void push(E item);
   // @Pre  
   // @Post  item is added to stack
   // will be popped next if no intervening push
   
   public E pop();
   // @Pre  stack is not empty
   // @Post  most recently pushed item is removed and returned
   
   public E peek();
   // @Pre  stack is not empty
   // @Post  top value (next to be popped) is returned
   
   public boolean empty();
   // @Post  returns true if and only if the stack is empty
   
   public int size();
   // @Post  returns the number of elements in the stack

}

